package UI;

import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;

import UI.ShopClientUI;
import domain.ShopVerwaltung;
import domain.Verwaltung;
import domain.MitarbeiterVerwaltung;
import valueobjects.Artikel;


public class MitarbeiterClientUI extends ShopClientUI{
	
	
	private ShopVerwaltung ShopVt;
	
	
	public MitarbeiterClientUI(String datei) throws IOException, Exception {
	
		super(datei);
		
		ShopVt = new  ShopVerwaltung(datei);
		
	}
	
	
	private void gibMenueAus(){
		
		System.out.println("Artikel-liste ausgeben (1)");
		System.out.println("Artikel suchen (2)");
		System.out.println("Artikel anlegen (3)");
		System.out.println("Artikel loeschen (4)");
		System.out.println("WarenBestand bearbeiten (5)");
		System.out.println("Beenden (q)");
		System.out.println(": ");
		System.out.flush();
		
	}


	private void verarbeiteEingabe(String line) throws IOException, Exception {
		
		if (line.equals("1")) { 
			
			Vector<Artikel> artikelListe = ShopVt.gibAlleArtikel();
			gibArtikellisteAus(artikelListe);
			
		}
		
		else if (line.equals("2")) {
			
			System.out.println("Artikel name  > ");
			String artikelname = liesEingabe();
			
			List<Artikel> liste = ShopVt.sucheArtikelNachName(artikelname);
			gibArtikellisteAus(liste);

		}
		
		else if (line.equals("3")) {

			System.out.print("Artikel-ID  > ");
			String artikelID = liesEingabe();
			
			System.out.print("Artikel name  > ");
			String artikelName = liesEingabe();
			
			System.out.print("Preis  > ");
			String artikelPreis = liesEingabe();
			float preis = Float.parseFloat(artikelPreis);
				
			System.out.print("Menge  > ");
			String artikelMenge = liesEingabe();
			int menge = Integer.parseInt(artikelMenge);
			
						
			boolean ok = ShopVt.fuegeArtikelEin(artikelID, artikelName, preis, menge);

			if (ok){
				ShopVt.nachArtikelIDSortieren();
				ShopVt.schreibeLogFile("m");
				System.out.println("Einfuegen erfolgreich.");
			}else
				System.out.println("Fehler beim Einfuegen!");
		}
		
		else if (line.equals("4")) {
			
			System.out.println("Artikel name  > ");
			String removeName = liesEingabe();
			
			Artikel a = ShopVt.sucheArtikel(removeName);
			
			if(a != null){
				boolean removeOk = ShopVt.artikelLoeschen(a);
				if(removeOk == true){
					System.out.println("Der Artikel wurde geloescht!!\n");
					ShopVt.schreibeLogFile("m");
				}
				else{
					System.out.println("Artikel nicht gefunden!");
				}
			}

		}
		
		else if (line.equals("5")) {
			
			System.out.println("Geben Sie den Artikel name ein > ");
			String artikelname = liesEingabe();
			Artikel suchArtikel = ShopVt.sucheArtikel(artikelname);
			if(suchArtikel!=null){
				System.out.println("Geben Sie Menge ein > ");
				String StringMenge = liesEingabe();
				int menge = Integer.parseInt(StringMenge);
				if((suchArtikel.getMenge()+menge)<0){
					System.out.print("Falsche Menge!!");
				}
				else{
					ShopVt.setArtikelMenge(suchArtikel,menge+suchArtikel.getMenge());
					ShopVt.schreibeLogFile("m");
					System.out.println("Die Menge wurde geandert!");
				}
			}
			else{
				System.out.print("Das Artikel ist nicht gefunden!!");
			}
			
		}
	}
	
	
	private void gibArtikellisteAus(List<Artikel> artikelliste) {
		
		if (artikelliste.isEmpty()) {
			System.out.println("Artikel liste ist leer.");
		} else {
			Iterator<Artikel> iter = artikelliste.iterator();
			while (iter.hasNext()) {
				Artikel artikel = iter.next();
				System.out.println(artikel.toString());
			}
		}
		
	}
	

	public void mClRun() throws Exception {
		
		String input = "";
		
		do{
			gibMenueAus();
			try{
				input = liesEingabe();
				verarbeiteEingabe(input);
				ShopVt.schreibeArtikel();
			}catch (IOException e){
				e.printStackTrace();
			}
		}while (!input.equals("q"));
	}
	
}
